<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Automated Dynamic Redistribution of Virtual Operating Systems under the Xen Virtual Machine Monitor</title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<meta name="presdate" content="20070213" />
<meta name="author" content="Travis F Vachon" />
<meta name="company" content="Williams College" />
<!-- configuration parameters -->
<meta name="defaultView" content="slideshow" />
<meta name="controlVis" content="hidden" />
<!-- style sheet links -->
<link rel="stylesheet" href="ui/innsbruck/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/innsbruck/outline.css" type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="ui/innsbruck/print.css" type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="ui/innsbruck/opera.css" type="text/css" media="projection" id="operaFix" />
<!-- S5 JS -->
<script src="ui/innsbruck/slides.js" type="text/javascript"></script>
</head>
<body>

<div class="layout">
<div id="controls"><!-- DO NOT EDIT --></div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
<div id="header"></div>
<div id="footer">
<h1>IASTED Conference on Parallel and Distributed Computing, Innsbruck, Austria, February 13th, 2007</h1>
<h2>Automated Dynamic Redistribution of Virtual Operating Systems under the Xen Virtual Machine Monitor</h2>
</div>

</div>


<div class="presentation">

<div class="slide">
<center>
<h1>Automated Dynamic Redistribution of Virtual Operating Systems under the Xen Virtual Machine Monitor</h1>
</center>
<center>
<!--<h2>[slide show subtitle here]</h2>-->
<h3>Travis F. Vachon and James D. Teresco</h3>
<h4>Williams College, Williamstown, Massachusetts, USA</h4>
</center>
</div>

<div class="slide">
<h1>Introduction and Overview</h1>
<div class="slidecontent">
<ul>
  <li>Operating System Virtualization</li>
  <li>Application and Process Balancing</li>
  <li>Why Operating System Virtualization?</li>
  <li>Our approach: a real test bed and simulator</li>
  <li>Results</li>
  <li>Conclusions</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Operating System Virtualization</h1>
<div class="slidecontent">
<h3>Overview</h3>
<h2></h2>
<ul>
  <li>Provide <em>hypervisor</em> that is responsible for creating hardware-like
      environment
  </li>
  <li>Currently, hypervisors provide either <em>full</em> or <em>para-virtualization</em></li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
<div class="slide">
<h1>Operating System Virtualization</h1>
<div class="slidecontent">
<h3>Full vs. Para-Virtualization</h3><br/>
<h2>VMWare: Full Virtualization</h2>
<ul> 
  <li style="margin-bottom: -0.5em;">Provide environment identical to x86 hardware</li>
  <li style="margin-bottom: -0.5em;">Operating system kernels do not require modification</li>
  <li style="margin-bottom: -0.5em;">Carries significant performance penalties</li>
</ul><br/>
<h2>Xen: Para-virtualization</h2>
<ul>
  <li style="margin-bottom: -0.5em;">Provide environment similar (but not identical) to x86 hardware</li>
  <li style="margin-bottom: -0.5em;">Operating system kernel requires some modification, about 2000 lines of code for the Linux kernel</li>
  <li style="margin-bottom: -0.5em;">Provides near "bare metal" performance</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>


<div class="slide">
<h1>Application and Process Balancing</h1>
<div class="slidecontent">
<h2>Load balancing has been studied at the application and process levels</h2><p>
<h3>Application-level balancing</h3>
<ul>
   <li>Redistribute work among a set of static processes</li>
   <li>Common in scientific computation: finite element, related methods</li>
</ul>
<p>
<h3>Process-level balancing</h3>
<ul>
   <li>Next step: migrate processes among machines</li>
   <li>Support from tools like Condor, MPI/IOS</li>
   <li>Allows a computation to take advantage of newly-available machines, move from overloaded machines</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Why Operating System Virtualization?</h1>
<div class="slidecontent">
<h3>Use cases:</h3>
<ul>
  <li>Do more with less physical hardware</li>
  <li>"Server farms" providing virtual servers</li>
  <li>Thin client servers</li>
  <li>Build/test slaves for software development</li>
</ul>
&nbsp;<h3>Why migration?</h3>
<ul>
<li>Load balancing of physical hosts</li>
<li>Maintenance of physical hosts with no user downtime</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Our problem</h1>
<div class="slidecontent">
  <div style="margin: 3em; line-height: 1.1em; text-align: center;">
Given a pool of virtual operating systems and a smaller pool of physical hosts, 
can we improve the overall performance of the system by automating virtual
operating system migration based on system metrics?
  </div>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Algorithms</h1>
<div class="slidecontent">

<ul>
  <li>Sender Initiated vs. Receiver Initiated</li>
  <li>Simple Algorithm</li>
  <li>P-loss Algorithm</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Sender Initiated vs. Receiver Initiated</h1>
<div class="slidecontent">
<ul>
<li>Sender initiated</li>
<ul>
<li>Overloaded hypervisors search for underloaded physical nodes</li>
<li>Searcher migrates one or more virtual machines to new host</li>
</ul> 
<li>Receiver initiated</li>
<ul>
<li>Underloaded hypervisors search for overloaded physical nodes</li>
<li>Searcher sends signal to migrate one or more virtual machines to self</li>
</ul> 
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Simple Algorithm</h1>
<div class="slidecontent">
<ul>
<li>Receiver initiated policy</li>
<ul>
<li>Gather CPU load information</li>
<li>If this node is underloaded, get most active domain from most loaded peer node</li>
</ul>
<li>Sender initiated policy</li>
<ul>
<li>Gather CPU load information</li>
<li>If this node is overloaded, transfer most active domain to least loaded peer node</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>P-loss Algorithm</h1>
<div class="slidecontent">
<ul>
<li>Big assumption: All domains on a fully loaded node could be using all of that node.</li>
<li>Calculate "lost productivity": amount of work a node could be doing that it can't do because of CPU limitation</li>
<li>Calculate "unfairness": difference between highest and lowest lost productivities in the system</li>
</ul>
<br/>
<div>
<style type="text/css">
.physicalhost{
position: absolute; 
left: 4em;
width: 10em; 
height: 3em; 
border: 1px solid grey;
padding: 0.5em;
}

.phlabel{
font-size: 0.6em;
background: white;
position: relative;
top: -1.8em;
}

.vm{
position: relative;
padding: 0.5em;
top: -1.8em;
display: inline;
background: #617;
color: white;
font-weight: bold;
font-size: 0.5em;
border: 1px solid grey;
text-align: center;

}
.vmbox{

margin-bottom: 0.3em;
}

.phinfo{
font-size: 0.6em;
padding-top: 0.1em;
}

.captionbox{
position: relative;
left: 3em;
top: 4.5em;
}

</style>
<div class="physicalhost">
<span class="phlabel">Physical Host A: C<sub>1</sub>Hz</span><br/>
<div class="vmbox">
<div class="vm">VM 1: 50% * C<sub>1</sub></div>
<div class="vm">VM 2: 50% * C<sub>1</sub></div>
</div>
<span class="phinfo">Lost productivity = 2 * (1 - 0.5) * C<sub>1</sub></span>
</div>

<div class="physicalhost" style="left: 17em;">
<span class="phlabel">Physical Host B: C<sub>2</sub>Hz</span><br/>
<div class="vmbox">
<div class="vm">VM 3: 33% * C<sub>1</sub></div>
<div class="vm">VM 4: 33% * C<sub>1</sub></div><br/>
<div class="vm">VM 5: 33% * C<sub>1</sub></div>
</div>
<span class="phinfo" style="top: -1.8em; position: relative;">Lost productivity = 3 * (1 - 0.333) * C<sub>2</sub></span>
</div>
<div class="captionbox">
<div class="phinfo">Total lost productivity: 1*C<sub>1</sub> + 2*C<sub>2</sub></div>
<div class="phinfo">Total unfairness: 0.66 - 0.5 = 0.16</div>
</div>
</div>


</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>P-loss Algorithm</h1>
<div class="slidecontent">
<ul>
<li>First, try to find a migration that reduces lost productivity</li>
<li>If this is not possible, try to find a migration that reduces unfairness</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Test Bed</h1>
<div class="slidecontent">
<ul>
  <li>Real world</li>
  <ul>
    <li>Four 1GHz Intel Pentium 4 computers with 512 MB main memory</li>
    <li>Xen 3.0.1 running on top of Debian GNU/Linux</li>
    <li>Virtual domain storage provided via NFS shares based on host machines</li>
    <li>Physical hosts connected through 100 Mbit/sec campus network</li>
  </ul>
  <li>XenSim</li>
  <ul>
  <li>Java application designed to simulate multi-host <br/>many virtual operating system environment</li>
  <li>Intended to allow testing in larger scale scenarios than were possible in lab</li>
  
  </ul>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Test Bed</h1>
<div class="slidecontent">
<center>
  <img src="images/nfssetup.png" alt="Test bed"/
       style="width: 60%;">
</center>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>


<div class="slide">
<h1>Results</h1>
<div class="slidecontent">
<ul>
  <li>XenSim Verification</li>
  <li>Preliminary Testing Scenarios</li>
  <li>"Real World" Testing Scenarios</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>XenSim Verification</h1>
<div class="slidecontent">
<h2>We simulated the testbed described by Clark <em>et al.</em>(2005)</h2>
<center>
<img src="images/clarketalmigration.png" alt="Our results"
     style="width: 45%"/>
<img src="images/livemigbench.png" alt="Our results"
     style="width: 45%"/></center>
<br/>

<span style="font-size: 0.7em;">2 dual 2GHz servers with 2GB memory hosting a virtual machine with an 800 MB memory footprint</span>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Preliminary Testing Scenarios</h1>
<div class="slidecontent">
<ul>
<li>First tests run with 4 domains with 96 MB of memory on 4 physical hosts with 512 MB total memory</li>
<li>Two nodes with 1 virtual machine, one node with 2 virtual machines, one empty node</li>
<li>Test run for 5 minutes using sender and receiver initiated policies</li>
<li>Virtual machines running prime number generator</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Preliminary Testing Scenarios</h1>
<div class="slidecontent">
<center>
<img src="images/primes-test.png" style="height: 75%;"/>
</center>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1> "Real World" Testing Scenarios</h1>
<div class="slidecontent">
<ul>
<li>Apache tests run with 4-8 virtual machines with 96 MB of memory on 4 physical hosts with 512 MB total memory</li>
<li>Web server benchmarking program used to generate load in virtual machines. </li>
<li>5 minute tests were run with sender initiated                and receiver initiated versions of the                   simple and p-loss algorithms</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>"Real World" Testing Scenarios</h1>
<div class="slidecontent">
<center>
<table>
<tr>
<td><img src="images/finalsimplesi.png"
     style="width: 15em;"/></td>
<td><img src="images/finalutilitysi.png"
     style="width: 15em;"/></td>
</tr>
<tr style="text-align: center; font-size: 0.8em;">
<td>Simple Sender Initiated Algorithm</td>
<td>P-loss Sender Initiated Algorithm</td>
</tr>
</table>
</center>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
<div class="slide">

<h1>Conclusions: General</h1>
<div class="slidecontent">
<ul>
<li>For our simple scenario, it appears the simple algorithm performed best</li>
<li>Both algorithms suffered problems with migration locking</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Conclusions: P-loss</h1>
<div class="slidecontent">
<ul>
<li>One major problem with p-loss</li>
<li>"Big assumption: All domains on a fully loaded node could be using all of that node"</li>
<li>This is a problem of performance prediction</li>
<li>In general, techniques to predict future performance are very important</li>
<li>In process balancing, this is done using assumptions          about process lifetimes</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Future work</h1>
<div class="slidecontent">
<ul>
<li>Modular design of xenbal allows for testing of new algorithms</li>
<li>Code for xenbal and XenSim is available at <a href="http://code.google.com/p/xenbal">
http://code.google.com/p/xenbal</a> and is distributed under a GNU Public License</li>
</ul>
</div>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>




</div>


</body>
</html>
